// 第09节：Koa-router中间件（2）层级

const Koa=require('koa');
const Router=require('koa-router');

const App=new Koa()
const router=new Router({
    prefix:'/Dfei' //设置前缀
});

// 设置前缀说明
/**
 * 有时候我们想把所有的路径前面都再加入一个级别，比如原来我们访问的路径是http://127.0.0.1:3000/todo，现在我们希望在所有的路径前面都加上一个jspang层级，把路径变成http://127.0.0.1:3000/jspang/todo.这时候就可以使用层级来完成这个功能。路由在创建的时候是可以指定一个前缀的，这个前缀会被至于路由的最顶层，也就是说，这个路由的所有请求都是相对于这个前缀的。
 */ 

router.get('/dfei',(ctx,next)=>{
    ctx.body='DFEI'  
})






//  需求
/**
 * 设置前缀一般都是全局的，并不能实现路由的层级，如果你想为单个页面设置层级，也是很简单的。只要在use时使用路径就可以了。

    例如这种写法装载路由层级，这里的router相当于父级：router.use(‘/page’, page.routes(), page.allowedMethods())。

    通过这种写法的好处是并不是全局的，我们可以给不同的路由加层级。

    代码如下：我们声明了两个路由，第一个是home,第二个是page.然后通过use赋予不同的前层级。
 * */ 

//  两个子路由

const home=new Router()
home.get('/dfei',(ctx,next)=>{
    ctx.body='Home  dfei'
})
.get('/todo',(ctx,next)=>{
    ctx.body='Home todo'
})

const page=new Router();
page.get('/dfei',(ctx,next)=>{
    ctx.body='page dfei'
})
.get('/todo',(ctx,next)=>{
    ctx.body='page todo'
})

// 转载所有子路由
const routers=new Router();
routers.use('/home',home.routes(),home.allowedMethods());  //浏览器访问：  127.0.0.1:3000/home/dfei   127.0.0.1:3000/home/todo   
routers.use('/page',page.routes(),page.allowedMethods());  //浏览器访问：  127.0.0.1:3000/page/dfei   127.0.0.1:3000/page/todo  


// 加载路由中间件
App.use(router.routes()).use(router.allowedMethods());  //全局的路由中间件
// 加载路由中间件
App.use(routers.routes()).use(routers.allowedMethods()); //刚才分开的路由中间件

App.listen(3000,()=>{
    console.log('服务已启动')
})